package activity;

import model.Todo;
import model.TodoDate;
import android.app.Activity;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import com.example.apptodo.R;

import db.SimpleDatabaseHelper;
import dialog.TodoDateDialog;
import dialog.TodoTimeDialog;

public class EditActivity extends Activity 
						  implements OnDateSetListener, 
						  			 OnTimeSetListener,
						  			 OnCheckedChangeListener {

	private EditText editText = null;
	private TextView textDate = null;
	private TextView textTime = null;
	private CheckBox checkDone = null;
	private Todo todo = null;
	private SimpleDatabaseHelper helper = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_edit);
		//	受け取ったIntentからオブジェクトを取り出す
		Intent i = getIntent();
		todo = (Todo)i.getSerializableExtra("todo");
		//	参照を取得
		editText = (EditText)findViewById(R.id.editText);
		textDate = (TextView)findViewById(R.id.textDateEdit);
		textTime = (TextView)findViewById(R.id.textTimeEdit);
		checkDone = (CheckBox)findViewById(R.id.chkDone);
		//	情報を表示する
		editText.setText(todo.getAction());
		//	日付と時刻の規定値をセット
		textDate.setText(TodoDate.getDateString(todo));
		textTime.setText(TodoDate.getTimeString(todo));
		//	チェックボックスを設定する
		checkDone.setChecked(todo.getDone());
		checkDone.setOnCheckedChangeListener(this);
		//	SimpleDatabaseHelperを準備する
		helper = new SimpleDatabaseHelper(this);
	}
	/**
	 * 削除ボタンがクリックされると呼び出される
	 * @param view	削除ボタン
	 */
	public void btnDelete_onClick(View view) {
		//	テーブルから該当するレコードを削除する
		helper.delete(todo);
		//	画面を閉じる
		finish();
	}
	/**
	 * 更新ボタンがクリックされると呼び出される
	 * @param view	更新ボタン
	 */
	public void btnUpdate_onClick(View view) {
		//	入力文字列を取得する
		String str = editText.getText().toString();
		
		if (str != null && str.length() > 0) {
			//	情報を更新する
			todo.setAction(editText.getText().toString());
			//	テーブルの該当するレコードを更新する
			helper.update(todo);
			//	画面を閉じる
			finish();
		}
		else {
			//	空になったので編集前の状態に戻す
			editText.setText(todo.getAction());
			//	警告ダイアログを表示する
			Toast.makeText(
					this, 
					"入力してください", 
					Toast.LENGTH_LONG).show();
		}
	}
	
	public void date_onClick(View view) {
		Log.i("EditActivity", "date_onClick");
		
		TodoDateDialog dialog = 
				new TodoDateDialog(this, this, todo);
		dialog.show();
	}
	
	public void time_onClick(View view) {
		Log.i("EditActivity", "date_onClick");
		
		TodoTimeDialog dialog = 
				new TodoTimeDialog(this, this, todo);
		dialog.show();
	}

	@Override
	public void onDateSet(
			DatePicker view, 
			int year, 
			int monthOfYear,
			int dayOfMonth) {
		todo.setYear(year);
		todo.setMonth(monthOfYear);
		todo.setDay(dayOfMonth);
		todo.setTime();
		//	日付を再表示
		textDate.setText(TodoDate.getDateString(todo));
	}

	@Override
	public void onTimeSet(
			TimePicker view, 
			int hourOfDay, 
			int minute) {
		todo.setHour(hourOfDay);
		todo.setMinute(minute);
		todo.setTime();
		//	時刻を再表示
		textTime.setText(TodoDate.getTimeString(todo));
	}
	@Override
	public void onCheckedChanged(
			CompoundButton buttonView, 
			boolean isChecked) {
		//	状態を更新する（完了）
		todo.setDone(isChecked);
	}
}
